import { saveAs } from 'file-saver'

/**
 * 格式化文件大小
 * @param size
 */
export const formatSize = (size?: number) => {
  if (!size) return '未知'
  if (size < 1024) return size + ' B'
  if (size < 1024 * 1024) return (size / 1024).toFixed(2) + ' KB'
  return (size / (1024 * 1024)).toFixed(2) + ' MB'
}

/**
 * 下载图片
 * @param url 图片下载地址
 * @param fileName 要保存为的文件名
 */
export function downloadImage(url?: string, fileName?: string) {
  if (!url) {
    return
  }
  saveAs(url, fileName)
}

/**
 * 将颜色值转换为十六进制颜色值
 * @param input
 */
export function toHexColor(input: string) {
  // 处理输入为非字符串或空值的情况
  if (typeof input !== 'string' || !input) {
    return '#000000';
  }

  // 去除可能的 0x 或 # 前缀
  const colorValue = input.replace(/^(0x|#)/i, '');

  // 检查是否为有效的十六进制字符
  if (!/^[0-9a-f]*$/i.test(colorValue)) {
    return '#000000';
  }

  // 解析为整数并处理范围
  let parsed = parseInt(colorValue, 16);
  if (isNaN(parsed)) {
    return '#000000';
  }

  // 限制数值在 0 ~ 0xFFFFFF 范围内
  parsed = Math.max(0, parsed);
  parsed = parsed % 0x1000000; // 取后6位十六进制数

  // 转换为6位十六进制字符串，补零并小写
  const hexColor = parsed.toString(16).padStart(6, '0').toLowerCase();

  return `#${hexColor}`;
}

